package com.wyc.internalCommon.request;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 司机信息对象 driver_user
 * 
 * @author li
 * @date 2023-03-25
 */
@Data
public class DriverUserDTO
{
    private static final long serialVersionUID = 1L;

    /** id */
    private Long id;

    /** 注册地行政区划代码 */
    private String address;

    /** 司机姓名 */
    private String driverName;

    /** 司机手机号 */
    private String driverPhone;

    /** 司机性别
    0：未知
    1：男
    2：女  */
    private Long driverGender;

    /** 出生日期 */
    private LocalDate driverBirthday;

    /** 民族 */
    private String driverNation;

    /** 司机通讯地址 */
    private String driverContactAddress;

    /** 机动车驾驶证号 */
    private String licenseId;

    /** 初次领取驾驶证日期 */
    private LocalDate getDriverLicenseDate;

    /** 驾驶证有效期起 */
    private LocalDate driverLicenseOn;

    /** 驾驶证有效期止 */
    private LocalDate driverLicenseOff;

    /** 是否巡游出租汽车 
    0：否
    1：是 */
    private Integer taxiDriver;

    /** 网络预约出租汽车驾驶员资格证号 */
    private String certificateNo;

    /** 网络预约出租汽车驾驶员证书发证机构 */
    private String networkCarIssueOrganization;

    /** 资格证发证日期 */
    private LocalDate networkCarIssueDate;

    /** 初次领取资格证日期 */
    private LocalDate getNetworkCarProofDate;

    /** 资格证有效起始日期 */
    private LocalDate networkCarProofOn;

    /** 资格证有效截至日期 */
    private LocalDate networkCarProofOff;

    /** 报备日期 */
    private LocalDate registerDate;

    /** 服务类型
    1:网络预约出租汽车
    2:巡游出租汽车
    3:私人小客车合乘 */
    private Integer commercialType;

    /** 驾驶员合同（或协议）签署公司 */
    private String contractCompany;

    /** 合同有效期起 */
    private LocalDate contractOn;

    /** 合同有效期止 */
    private LocalDate contractOff;

    /** 司机状态
    0：有效
    1：失效 */
    private Integer state;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private LocalDateTime gmtCreate;

    /** 修改时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private LocalDateTime gmtModified;

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("address", getAddress())
            .append("driverName", getDriverName())
            .append("driverPhone", getDriverPhone())
            .append("driverGender", getDriverGender())
            .append("driverBirthday", getDriverBirthday())
            .append("driverNation", getDriverNation())
            .append("driverContactAddress", getDriverContactAddress())
            .append("licenseId", getLicenseId())
            .append("getDriverLicenseDate", getGetDriverLicenseDate())
            .append("driverLicenseOn", getDriverLicenseOn())
            .append("driverLicenseOff", getDriverLicenseOff())
            .append("taxiDriver", getTaxiDriver())
            .append("certificateNo", getCertificateNo())
            .append("networkCarIssueOrganization", getNetworkCarIssueOrganization())
            .append("networkCarIssueDate", getNetworkCarIssueDate())
            .append("getNetworkCarProofDate", getGetNetworkCarProofDate())
            .append("networkCarProofOn", getNetworkCarProofOn())
            .append("networkCarProofOff", getNetworkCarProofOff())
            .append("registerDate", getRegisterDate())
            .append("commercialType", getCommercialType())
            .append("contractCompany", getContractCompany())
            .append("contractOn", getContractOn())
            .append("contractOff", getContractOff())
            .append("state", getState())
            .append("gmtCreate", getGmtCreate())
            .append("gmtModified", getGmtModified())
            .toString();
    }
}
